package org.facyt.vacas.entities.vacas.restricciones;
        
import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import org.facyt.vacas.entities.vacas.Componente;

/**
 * @author Virginia
 * @version 1.0
 * @created 30-sep-2009 11:59:59 a.m.
 */
@Entity
@Table(name="rest_simple", schema="vacas")
public class RestriccionSimple extends Restriccion implements Serializable, RestriccionI {
	         
	
	@Column(name = "cantidad", columnDefinition="float4")
	private BigDecimal cantidad;

    
	public BigDecimal getCantidad() {
		return cantidad;
	}


	public void setCantidad(BigDecimal cantidad) {
		this.cantidad = cantidad;
	}


	
	public Componente getComponenteById() {
		return getComponente();
		
	}

	

	public RestriccionSimple() {

	}

	public boolean esMenor() {
		 
		return false;
	}

	public boolean esMayor() {
		 
		return false;
	}

	public boolean esMenorIgual() {
		 
		return false;
	}

	public boolean esMayorIgual() {
		 
		return false;
	}

	public boolean esIgual() {
		 
		return false;
	}

	public boolean esDoble() {
		 
		return false;
	}

	public boolean esSimple() {
		 
		return true;
	}


	public boolean esRango() {
		 
		return false;
	}

	public String toStringFormulacionRestriccion(BigDecimal cant, BigDecimal asatisfacer) {
		return getComponenteById().getDescripcion() + " Hay: " + cant
				+ ". Debe " + this.getToString() + ": >=" + asatisfacer;
	}

	public String getToString() {
		if (esMenor() || esMenorIgual())
			return "<=" + getCantidad();
		else if (esMayor() || esMayorIgual())
			return ">=" + getCantidad();
		else
			return "=" + getCantidad();
	}

	public String getSignoTipo() {
		if (esMenor() || esMenorIgual())
			return "<=";
		else if (esMayor() || esMayorIgual())
			return ">=";
		else
			return "=";
	}

	public boolean esFA() {
		 
		return false;
	}

	/**
	 * @return
	 */
	public String getRestriccionToString() {
		return ((Componente) getComponenteById()).getDescripcion();
	
	}

	/**
	 * @return
	 */
	public String getUnidadToString() {
			return getComponenteById().getUnidad().getDescripcion();
	}


	public Object clone() throws CloneNotSupportedException {
		RestriccionSimple rsClon = null;
		if(this.esIgual())
			 rsClon = new Igual();
		else
			if(this.esMayor())
				rsClon = new Mayor();
			else
				if(this.esMenor())
					rsClon = new Menor();
				else
					if(this.esMayorIgual())
						rsClon = new MayorIgual();
					else
						if(this.esMenorIgual())
							rsClon = new MenorIgual();
						else
						{
//							System.out.println("la restriccion no es de ningun tipo");

							rsClon = new RestriccionSimple();    	}
		rsClon.setEsF(this.isEsF());
		rsClon.setEsR(this.isEsR());
    	rsClon.setComponente(this.getComponente());
    	rsClon.setCantidad(this.getCantidad());

		return rsClon;
	}

	public String getStringRestriccion() {
		return getRestriccionToString() + " " + getToString() + " "
				+ getRFoNada();
	}


	
}